package com.mmall.concurrency.example.immutable;

import com.google.common.collect.Maps;
import com.mmall.concurrency.annoations.ThreadSafe;
import lombok.extern.slf4j.Slf4j;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

@Slf4j
@ThreadSafe
public class ImmutableExample2 {

    private  static Map<Integer, Integer> map =new HashMap<>();// Maps.newHashMap();

    static {
        map.put(1, 2);
        map.put(3, 4);
        map.put(5, 6);
        map = Collections.unmodifiableMap(map);//让线程变得安全，jdk提供
    }

    public static void main(String[] args) {
    	//这边要特意讲一下，因为Collections.unmodifiableMap修饰的map是不能被final修饰的。
    	//所以这样写的话给map重新赋值也是可以的，这时候是可以修改map的值得
    	map=new HashMap<>();
        map.put(1, 3);
        log.info("{}", map.get(1));
    }

}
